// 图标组件基础属性接口，不包含icon属性
export interface TuiIconBaseProps {
  /**
   * 图标大小
   * @default '16px'
   */
  size?: string | number;
  /**
   * 图标颜色
   */
  color?: string;
  /**
   * 自定义类名
   * @default ''
   */
  className?: string;
  /**
   * 自定义样式
   */
  style?: Record<string, any>;
  /**
   * 自定义图标配置，格式为 {
   *   [prefix: string]: { 
   *     [iconName: string]: string | {
   *       body: string, // SVG路径或HTML内容
   *       width?: number, // 图标宽度，可选
   *       height?: number, // 图标高度，可选
   *       animation?: string // 动画名称，可选
   *     } 
   *   }
   * }
   */
  customIcons?: Record<string, Record<string, string | { body: string, width?: number, height?: number, animation?: string }>>;
  /**
   * 动画类型
   */
  animation?: string | (string | any)[] | any;
  /**
   * 统一动画持续时间
   */
  animationDuration?: string | number;
  /**
   * 动画运行次数
   */
  animationIterationCount?: boolean | number | string | 'infinite';
  /**
   * 动画延迟
   */
  animationDelay?: string | number;
  /**
   * 是否启用动画
   */
  animationEnabled?: boolean;
  /**
   * 是否反转图标颜色（将实心线条转为空心，空白区域转为实心）
   */
  reverse?: boolean;
}

// 带icon的图标基础配置
export interface TuiIconWithNameProps extends TuiIconBaseProps {
  /**
   * 图标名称
   */
  icon: string;
}

// 图标组件属性接口
export interface TuiIconProps extends TuiIconBaseProps {
  /**
   * 图标名称，SVG字符串，也可以是包含完整属性的对象
   */
  icon: string | TuiIconWithNameProps;
}